package acwing.算法题;

import java.util.Scanner;

/**
 * @author： li
 * @date： 2022-03-11 11:52
 * @version 1.0
 */
/*
* 输入一个 32 位整数，输出该数二进制表示中 1 的个数。

注意：

负数在计算机中用其绝对值的补码来表示。
数据范围
−100≤ 输入整数 ≤100
样例1
输入：9
输出：2
解释：9的二进制表示是1001，一共有2个1。
样例2
输入：-2
输出：31
解释：-2在计算机里会被表示成11111111111111111111111111111110，
      一共有31个1。*/
public class 二进制中1的个数 {
    static  int NumberOf1(int n)
    {   int count=0;
        for(int i=0;i<32;i++){
            if((n&1)==1) count++;
            n=n>>1;
        }
        return count;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int ans = NumberOf1(n);
        System.out.println(ans);
        sc.close();
    }
}
